草庐IT

Android JSONObject 与 GSON

全部标签

java - 使用 GSon 从 JSon 转换为多个未知的 java 对象类型

我有一个netty解码器,它使用GSon将来自Web客户端的JSON转换为适当的Java对象。要求是:客户端可能会发送不相关的类、A类、B类、C类等,但我想在管道中使用相同单例解码器实例进行转换(因为我使用spring来配置它)。我面临的问题是我需要事先知道class对象。publicObjectdecode(){gson.fromJson(jsonString,A.class);}这无法解码B或C。我的库的用户现在需要为每个类编写单独的解码器,而不是稍后进行强制转换。我能看到这样做的唯一方法是从Web客户端的JSON字符串中传递类的字符串名称说“org.example.C”,在解码器

java - Gson自动添加classname

假设我有以下类(class):publicclassDog{publicStringname="Edvard";}publicclassAnimal{publicDogmadDog=newDog();}如果我通过Gson运行它,它将按如下方式序列化:GSongson=newGSon();Stringjson=gson.toJson(newAnimal())result:{"madDog":{"name":"Edvard"}}到目前为止一切顺利,但我想使用Gson自动为所有类添加类名,所以我得到以下结果:{"madDog":{"name":"Edvard","className":"Do

java - 如何使用 Gson 动态处理 json 响应数组/对象

我面临一个问题,有时Json响应返回一个对象数组,有时返回对象本身,我们如何在响应类中动态处理。在当前eg:results有时会得到一个对象数组"\"results\":"+"[{"+有时对象本身"\"results\":"+"{"+例如:我们该如何处理?Gsongson=newGson();SearchResponseresponse=newSearchResponse();response=gson.fromJson("{"+"\"completed_in\":0.047,"+"\"max_id\":291771567376039936,"+"\"max_id_str\":\"29

java - 使用 Gson 的自定义 JSON 反序列化器

我在使用Gson解析JSON响应时遇到问题。JSON字符串:response:[2,{owner_id:23972237,album_id:25487692,title:'albumnotnew'},{owner_id:23972237,album_id:25486631,title:'фыв'}]我有这两个类:publicclassVkAudioAlbumsResponse{publicArrayListresponse;publicVkErrorerror;}publicclassVkAudioAlbum{publicintowner_id;publicintalbum_id;pu

java - 如何将 LinkedTreeMap 转换为 gson JsonObject

对于java数据处理程序,我发送格式正确的JSON,但Spring、Java决定如何转换它看到的内容以及框架的组合我真的不应该去改变破坏JSON,以便一旦我能看到它,它变成了LinkedTreeMap,我需要将它转换成JsonObject。这不是将JSON序列化/反序列化为java对象,它的“最终形式”是一个gsonJsonObject,它需要能够处理任何有效的JSON。{"key":"value","object":{"array":["value1","pleasework"]}}是我一直在使用的示例,一旦我看到它,它就是一个.toString()到的LinkedTreeMap{k

java - Gson:需要一个字符串但是是 BEGIN_OBJECT

我正在尝试读取一个简单的JSON响应:{"response":"ok"}这是我的代码:JsonReaderreader=newJsonReader(newInputStreamReader(in,"UTF-8"));Stringresponse=null;booleansuccess=false;reader.beginObject();if(reader.hasNext()){Stringtoken=reader.nextName();if(token.equals("response")){response=reader.nextString();}else{reader.skip

java - 在不使用 POJO 的情况下使用 GSON 修改 json

我想修改一个json内容而不是将其转换成POJO。我正在使用GSON库。以下是用例:StringjsonString="[{\"key1\":\"Hello\",\"key2\":\"World\"},{\"key1\":\"Nice\",\"key2\":\"Town\"}]";JsonElementjsonElement=gson.fromJson(jsonString,JsonElement.class);有什么方法可以在每个数组中将key1的值设置为某个值(比如“测试”),而无需将其转换为POJO 最佳答案 这是我想到的最短

java - pojo 解析具有无效 java 名称的 gson

我正在使用来自google-api-client的youtubejson:{"apiVersion":"2.0","data":{"updated":"2011-01-05T13:48:33.146Z","totalItems":4,"startIndex":1,"itemsPerPage":1,"items":[{"id":"YfUzMkAlOBI","uploaded":"2010-12-29T16:50:47.000Z","updated":"2010-12-29T16:50:47.000Z","uploader":"devandroidcs","category":"Enter

java - 为什么 Gson 中的 TypeToken 构造如此奇怪?

我在用Gson解析object和json的时候,一个TypeToken的初始化好奇怪:TypecollectionType=newTypeToken>(){}.getType();我只知道这种格式:newTypeToken>().getType();,上面的大括号是做什么用的?提前致谢!P.S.我查看了TypeToken的源代码类,它是一个class(不是接口(interface)或抽象)并且没有任何构造函数,这意味着它使用no-parameterconstructor默认。P.S.2当我删除大括号时,它告诉我构造函数不可见。当我查看TypeToken类内部时,这是构造函数:prote

java - Google GSON 嵌套 HashMaps 反序列化

在我当前的项目中,我在android中使用GSON库,并且我遇到了嵌套map反序列化的问题。这是初始json的样子{"5":{"id":5,"name":"initialname","image_url":"uploads/71d44b5247cc1a7c56e62fa51ca91d9b.png","status":"1","flowers":{"7":{"id":7,"category_id":"5","name":"test","description":"somedescription","price":"1000","image_url":"uploads/test.png",